package com.example.firealarm.model;

import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

/**
 * 消防协议消息实体类
 * 基于GB/T 26875.3-2011国标协议
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FireMessage {

    /**
     * 起始符 (0x40 '@')
     */
    private byte startMark;

    /**
     * 消息长度 (从版本号开始到校验和的字节数)
     */
    private int messageLength;

    /**
     * 版本号
     */
    private byte version;

    /**
     * 源地址类型
     */
    private byte sourceType;

    /**
     * 源地址
     */
    private String sourceAddress;

    /**
     * 目的地址类型
     */
    private byte targetType;

    /**
     * 目的地址
     */
    private String targetAddress;

    /**
     * 流水号
     */
    private int serialNumber;

    /**
     * 命令字节
     */
    private byte command;

    /**
     * 数据内容
     */
    private byte[] data;

    /**
     * 校验和
     */
    private byte checksum;

    /**
     * 结束符 (0x23 '#')
     */
    private byte endMark;

    /**
     * 原始消息字节数组
     */
    private byte[] rawMessage;
}